package com.app.model;


import com.alibaba.excel.annotation.ExcelProperty;
import com.app.vo.IndexVo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.net.URL;
import java.sql.Timestamp;
import java.util.List;

@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName("lm_person")
@JsonInclude(JsonInclude.Include.NON_NULL)
public class PersonModel {
    @TableId(type = IdType.AUTO)
    private Integer id;
    private String faceUrl;//头像
    @TableField(exist = false)
    private URL Url;//头像

    @ExcelProperty("序号")
    private Integer serialNumber;
    @ExcelProperty("姓名")
    private String name;//姓名
    @ExcelProperty("性别")
    private String gender;
    @ExcelProperty("军官证号")
    private String sergeantNumber;//军士证号
    @ExcelProperty("军士证号")
    @TableField(exist = false)
    private String sergeantNumber1;//军士证号
    @ExcelProperty("身份证号")
    private String idcard;//身份证号
    private Integer departmentId;//所属单位ID
    @ExcelProperty("部职别")
    private String positionDesc;//现任单位及职务 部职别
    @ExcelProperty("职别")
    @TableField(exist = false)
    private String positionDesc1;//现任单位及职务 部职别
    @ExcelProperty("行政职务")
    private String administrativePosition;//行政职务
    @ExcelProperty("行政职务时间")
    private String administrativeTime;//行政职务时间
    @ExcelProperty("军衔等级")
    private String rankTitle;//官衔字段
    @ExcelProperty("军衔等级时间")
    private String rankTime;//军衔时间
    @ExcelProperty("军衔时间")
    @TableField(exist = false)
    private String rankTime1;//军衔时间
    @ExcelProperty("岗位层级")
    private String positionLevel;//岗位层级字段
    @ExcelProperty("岗位层级时间")
    private String positionTime;//岗位层级时间
    @ExcelProperty("待遇级别")
    private String treatmentLevel;//待遇级别
    @ExcelProperty("待遇级别时间")
    private String treatmentTime;//待遇级别时间
    @ExcelProperty("出生时间")
    private String birthday;//生日
    @ExcelProperty("出生日期")
    @TableField(exist = false)
    private String birthday1;//生日
    @ExcelProperty("入伍时间")
    private String rwTime;//入伍时间
    @ExcelProperty("相当入伍时间")
    private String xdrwTime;
    @ExcelProperty("入党时间")
    private String rdTime;//入党时间
    @ExcelProperty("第一学历")
    private String educationText;//学历字段
    @ExcelProperty("学历")
    @TableField(exist = false)
    private String educationText1;//学历字段
    @ExcelProperty("毕业院校")
    private String school;//毕业院校
    @ExcelProperty("所学专业")
    private String major;//专业
    @ExcelProperty("现在学历")
    private String firstEducationText;//第一学历字段
    @ExcelProperty("毕业院校及时间")
    private String firstSchool;//毕业院校
    @ExcelProperty("籍贯")
    private String nativePlace;//籍贯
    @ExcelProperty("民族")
    private String nationText;//民族字段
    @ExcelProperty("婚姻状况")
    private String maritalStatusText;//婚姻状况
    @ExcelProperty("士官来源")
    private String officersSource;
    @ExcelProperty("实际工作岗位")
    private String actualJob;
    @ExcelProperty("备注")
    private String remark;//备注
    @ExcelProperty("毕业时间")
    private String schoolTime;
    //以上为导入数据
//---------------------------------------------------------------------
    private Integer personType;//人员类型ID 数据管理
    private String birthPlace;//出生地
    private Integer zzmm;//政治面貌 数据管理
    private String joinWorkTime;//参加工作时间
    private String isHealth;//健康状况 1健康2不健康
    private String phone;//联系电话
    private String address;//详细住址
    private String license;//驾照
    @TableField(exist = false)
    private Integer trainDesc;//军事训练成绩
    private String isSpecial;//是否特殊人才 1是2否
    private Integer status;//状态 1有效0无效
    private Timestamp createTime;
    private Timestamp updateTime;
    private Integer sort;//排序
    //----------------------------------------------------------------
    @TableField(exist = false)
    private List<PersonCheckModel> CheckList;//考核字段
    @TableField(exist = false)
    private List<PersonCheckModel> checkAdd;//考核字段
    @TableField(exist = false)
    private String checkRemove;//考核字段
    @TableField(exist = false)
    private String checkDesc;//考核字段
    @TableField(exist = false)
    private List<PersonFamilyModel> familyList;//家庭成员字段
    @TableField(exist = false)
    private List<PersonFamilyModel> familyAdd;//家庭成员字段
    @TableField(exist = false)
    private List<PersonFamilyModel> familyEdit;//家庭成员字段
    @TableField(exist = false)
    private String familyRemove;//家庭成员字段
    @TableField(exist = false)
    private List<PersonResumeModel> resumeList;//简历列表字段
    @TableField(exist = false)
    private List<PersonResumeModel> resumeAdd;//简历列表字段
    @TableField(exist = false)
    private List<PersonResumeModel> resumeEdit;//简历列表字段
    @TableField(exist = false)
    private String resumeRemove;//简历列表字段
    @TableField(exist = false)
    private List<ApplyModel> leaveList;//请假
    @TableField(exist = false)
    private List<ApplyModel> leaveEdit;//请假
    @TableField(exist = false)
    private String leaveRemove;//请假

    @TableField(exist = false)
    private String personStatusText;//人员状态
    @TableField(exist = false)
    private String departmentText;//部门字段
    @TableField(exist = false)
    private String zzmmText;//政治面貌字段

    @TableField(exist = false)
    private String personTypeText;//人员类型字段
    @TableField(exist = false)
    private String positionTecText;//专业技术职务字段
    @TableField(exist = false)
    private String trainDescText;//军事训练总成绩字段字段
    @TableField(exist = false)
    private String isHealthText;//健康字段
    @TableField(exist = false)
    private String isSpecialText;//特殊人才字段
    @TableField(exist = false)
    private PersonPositionModel positionText;//主要职位字段
    @TableField(exist = false)
    private List<PersonModel> personCategoryList;//categoryList
    @TableField(exist = false)
    private List<PersonTrainModel> trainList;//军事训练列表字段
    @TableField(exist = false)
    private double enjoyAmount;//福利费总额
    @TableField(exist = false)
    private List<EnjoyModel> enjoyList;//福利费
    @TableField(exist = false)
    private String separation;//分居费
    @TableField(exist = false)
    private String noEmploy;//随军未就业
    @TableField(exist = false)
    private String educationFee;//保教费
    @TableField(exist = false)
    private String provide;//赡养费
    @TableField(exist = false)
    private String supportAllowance;//赡养补助
    @TableField(exist = false)
    private String comfort;//慰问
    @TableField(exist = false)
    private String notArmy;//未随军

    @TableField(exist = false)
    private String brandName;
    @TableField(exist = false)
    private String deviceName;
    @TableField(exist = false)
    private URL faceUrlNew;
    @TableField(exist = false)
    private String mediaWB;//社交帐号
    @TableField(exist = false)
    private String mediaQQ;//社交帐号
    @TableField(exist = false)
    private String mediaWX;//社交帐号
    @TableField(exist = false)
    private Integer count;
    @TableField(exist = false)
    private List<IndexVo> genderList;
    @TableField(exist = false)
    private List<IndexVo> zzmmList;
    @TableField(exist = false)
    private List<IndexVo> educationList;
    @TableField(exist = false)
    private List<IndexVo> personTypeList;
    @TableField(exist = false)
    private List<IndexVo> positionLevelList;
    @TableField(exist = false)
    private List<IndexVo> rankTitleList;
    @TableField(exist = false)
    private List<IndexVo> descList;
    @TableField(exist = false)
    private Integer page;//社交帐号
    @TableField(exist = false)
    private Integer limit;
    @TableField(exist = false)
    private Integer isHost;
    @TableField(exist = false)
    private String keywords;
    @TableField(exist = false)
    private Integer depIds;
    @TableField(exist = false)
    private Integer sortType;
}


@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
@interface ExcelMultiProperty {
    String[] value();
}
